/**
 * Created by ${PRODUCT_NAME}.
 * User: skylerparr
 * Date: 12/12/10
 * Time: 9:21 AM
 * To change this template use File | Settings | File Templates.
 */
package com.thoughtorigin.meta {
import com.thoughtorigin.application.Disposable;
import com.thoughtorigin.reflect.*;

public interface MetaType extends Disposable {
    /**
     * passes in an array of MetaArgs
     */
    function decorate(object: Object, metadata: MetaDataItem, callback: Function): void;

    /**
     *
     * @param clazz
     * @param metaArgs
     */
    function preprocess(clazz: Class, metadata: MetaDataItem): void;

    /**
     * works like unix process proirities.
     * default 0
     * -20 highest
     * 20 lowest
     */
    function get priority(): int;
}
}
